cmake_minimum_required(VERSION 3.5.0)
project(test VERSION 0.1.0 LANGUAGES C CXX)

#设置C++标准为c11
set(CMAKE_CXX_STANDARD 11)
# C++ 11 是强制要求，不会衰退至低版本
set(CMAKE_CXX_STANDARD_REQUIRED ON)
#禁用编译器特有扩展，linux下的gcc编译器与windows下的msvc编译器有一些不同的特性，为了【跨平台】的需要，就将这个变量设置为OFF。
set(CMAKE_CXX_EXTENSIONS OFF)

#set关键词设置变量值。${var}可以来引用这个变量
#设置exe输出目录
set(EXECUTABLE_OUTPUT_PATH "${PROJECT_SOURCE_DIR}/bin")

#把main.cpp路径赋值给 SRC变量
set(SRC ${CMAKE_CURRENT_SOURCE_DIR}/src/main.cpp)
#查找源目录下的所有源文件，并将名称保存到DIR_SRCS变量
aux_source_directory(./src DIR_SRCS)

#指定生成目标，通过下面变量来构建
#add_executable(Demo ${DIR_SRCS}) #这个和下面方法都可以
add_executable(Demo ${SRC})

#cmake文件批量注释 #[[]]
#[[  
if(NOT CMAKE_BUILD_TYPE)
 set(CMAKE_BUILD_TYPE "Release")
endif()
]]

############# CMake常用内置变量 ##################
message("当前 CMakeLists.txt 文件所在的目录路径->${CMAKE_SOURCE_DIR}")
message("构建目录的路径,即执行cmake命令时生成的Makefile或其他构建系统文件所在的目录->${CMAKE_BINARY_DIR}")
message("当前处理的CMakeLists.txt所在的目录的路径->${CMAKE_CURRENT_SOURCE_DIR}")
message("当前处理的CMakeLists.txt生成的目标文件所在的目录的路径->${CMAKE_CURRENT_BINARY_DIR}")
message("当前正在处理的 CMake 文件的完整路径（包含文件名）->${CMAKE_CURRENT_LIST_FILE}")
message("当前正在处理的CMakeLists.txt所在的目录的路径。->${CMAKE_CURRENT_LIST_DIR}")
message("编译的时候Release版本还是Debug版本,还是其他版本->${CMAKE_BUILD_TYPE}")#默认什么都没做的的情况下，CMAKE_BUILD_TYPE为空，CMake默认编译为Debug


#三种类型的massage
message("Hello, World!")  # 默认以STATUS模式输出消息
message(STATUS "This is a status message.")
message(WARNING "This is a warning message.")#WARNING 是会打出一个警告
#message(FATAL_ERROR "This is a fatal error message.") #FATAL_ERROR 会终止cmake运行

